#ifndef _YANGP01_RB_TREE
#define _YANGP01_RB_TREE
enum {
	RB_RED = 0,
	RB_BLACK
};

typedef struct rb_node {
	int data;
	int color;

	struct rb_node *parent;
	struct rb_node *rb_left;
	struct rb_node *rb_right;
} rb_node_t;

typedef struct {
	rb_node_t *node;
} rb_root_t;


void rb_insert_color(rb_node_t *, rb_root_t *);
rb_node_t *rb_first(rb_root_t *);
rb_node_t *rb_next(rb_node_t *);
void rb_set_red(rb_node_t *);
void rb_link_node(rb_node_t *, rb_node_t *, rb_node_t **);
void rb_erase(rb_node_t *, rb_root_t *);

#endif
